/* Copyright (c) 2025 Beijing Semidrive Technology Corporation
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/** *****************************************************************************************************
 *  \file     McuExt_Types.h                                                                               *
 *  \brief    This file contains data structures header for MCUEXT MCAL driver.                         *
 *                                                                                                      *
 * <table>                                                                                              *
 * <tr><th>Date           <th>Version                                                                   *
 * <tr><td>2023/07/17     <td>1.0.0                                                                     *
 * </table>                                                                                             *
 *******************************************************************************************************/
#ifndef MCUEXT_TYPES_H
#define MCUEXT_TYPES_H

#ifdef __cplusplus
extern "C" {
#endif
/********************************************************************************************************
 *                                      Include header files                                            *
 *******************************************************************************************************/
/* Import Std_Types.h */
#include "Std_Types.h"
/********************************************************************************************************
 *                                 Global Macro definition                                              *
 *******************************************************************************************************/
#define MCUEXT_LOCAL                                                       static

/** \brief  Dummy error id state process. */
#define MCUEXT_DUMMY_STATEMENT(state)                                      ((state) = (state))

/** \brief  Semi Driver Vendor ID */
#define MCUEXT_VENDOR_ID                                                   (0x8CU)
/** \brief  McuExt Driver Module ID       */
#define MCUEXT_MODULE_ID                                                   (uint16)(2057U)
/** \brief McuExt Driver Instance ID */
#define MCUEXT_INSTANCE_ID                                                 (uint8)(0U)
/** \brief  FUNCTION:McuExt_PvtInit() */
#define MCUEXT_SID_PVT_INIT                                                (uint8)(0x00U)
/** \brief  FUNCTION:McuExt_PvtGet() */
#define MCUEXT_SID_PVT_GET                                                 (uint8)(0x01U)
/** \brief  FUNCTION:McuExt_PvtDeinit() */
#define MCUEXT_SID_PVT_DEINIT                                              (uint8)(0x02U)
/** \brief  FUNCTION:McuExt_PvtStop() */
#define MCUEXT_SID_PVT_STOP                                                (uint8)(0x03U)
/** \brief  FUNCTION:McuExt_PvtClearStatus() */
#define MCUEXT_SID_PVT_CLEAR_STATUS                                        (uint8)(0x04U)
/** \brief  FUNCTION:McuExt_PvtGetStatus() */
#define MCUEXT_SID_PVT_GET_STATUS                                          (uint8)(0x05U)
/** \brief  FUNCTION:McuExt_PvtEnableDisableInterrupt() */
#define MCUEXT_SID_PVT_ENABLE_DISABLE_INTERRUPT                            (uint8)(0x06U)
/** \brief  FUNCTION:McuExt_VdInit() */
#define MCUEXT_SID_VD_INIT                                                 (uint8)(0x07U)
/** \brief  FUNCTION:McuExt_VdGetInterruptStatus() */
#define MCUEXT_SID_VD_GET_INTERRUPT_STATUS                                 (uint8)(0x08U)
/** \brief  FUNCTION:McuExt_VdGetDynamicStatus() */
#define MCUEXT_SID_VD_GET_DYNAMIC_STATUS                                   (uint8)(0x09U)
/** \brief  FUNCTION:McuExt_VdClearInterruptStatus() */
#define MCUEXT_SID_VD_CLEAR_INTERRUPT_STATUS                               (uint8)(0x0AU)
/**
 *  \addtogroup MCAL_MCUEXT_MACRO McuExt Macro.
 *
 * This files defines MCUEXT MCAL macros.
 *  \{
 */

/** \brief  ERROR:Error due to API duplicated invoked McuExt_Init(). */
#define MCUEXT_E_INIT                                                      (Std_ReturnType)(0x80U)

/** \brief  ERROR:Error due to API invoked without performing McuExt_Init(). */
#define MCUEXT_E_UNINIT                                                    (Std_ReturnType)(0x81U)

/** \brief  ERROR:Error due to invalid power mode passed as parameter. */
#define MCUEXT_E_INVALID_PARAM                                             (Std_ReturnType)(0x82U)

/** \brief  ERROR:Error due to invalid pointer passed as parameter. */
#define MCUEXT_E_PARAM_POINTER                                             (Std_ReturnType)(0x83U)

/** \brief  ERROR:Error due to ate analog trim does not trim. */
#define MCUEXT_E_ATE_ANALOG_TRIM_FAIL                                      (Std_ReturnType)(0x84U)

/** \brief  ERROR:Error due to invalid config passed as parameter. */
#define MCUEXT_E_PARAM_CONFIG                                              (Std_ReturnType)(0x85U)

/** \brief  ERROR:Error due to vd init failed or duplicated vd init. */
#define MCUEXT_E_VD_INIT                                                   (Std_ReturnType)(0x86U)

/** \brief  ERROR:Error due to pvt init failed or duplicated vd init. */
#define MCUEXT_E_PVT_INIT                                                  (Std_ReturnType)(0x87U)

/** \brief  ERROR:Error due to pvt stoped. */
#define MCUEXT_E_PVT_STOP                                                  (Std_ReturnType)(0x88U)

/** \} */

#ifdef __cplusplus
}
#endif

#endif /** #ifndef MCUEXT_TYPES_H */
/* End of file */
